package com.xoa.service.cms;

import com.xoa.dao.cms.CmsSiteInfoMapper;
import com.xoa.dao.cms.SiteMouldMapper;
import com.xoa.model.cms.SiteMould;
import com.xoa.model.cms.SiteMouldExample;
import com.xoa.model.cms.SiteTemplateModel;
import com.xoa.model.portal.SiteTemplate;
import com.xoa.service.cms.core.FileUtils;
import com.xoa.util.common.wrapper.BaseWrapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;

/**
 * Created by cyt on 2018/7/7.
 */
@Service
public class CmsSiteTemplateService {
    @Autowired
    SiteMouldMapper siteTemplateMapper;

    /**
     * 获取站点模板
     * @param templateId
     * @return
     */
    public SiteTemplateModel getSiteTemplate(int templateId){
        SiteTemplateModel model = new SiteTemplateModel();
        SiteMould siteTemplate = siteTemplateMapper.selectByPrimaryKey(templateId);
        if(siteTemplate==null){
            return null;
        }
        //获取文件内容
        BeanUtils.copyProperties(siteTemplate, model);
        return model;
    }


    /**
     * 创建模板
     * @param siteTemplateModel
     */
    public BaseWrapper createTemplate(HttpServletRequest request, SiteTemplateModel siteTemplateModel){
        BaseWrapper baseWrapper=new BaseWrapper();
        SiteTemplate siteTemplate = new SiteTemplate();
        BeanUtils.copyProperties(siteTemplateModel, siteTemplate);
        //            ResourceBundle rb =  ResourceBundle.getBundle("cms");
//            String path = rb.getString("rootPath")+ System.getProperty("file.separator")+indexTpl.getSiteId();
        String path=request.getRealPath("cmstpls");

        //登录库
        String dateSouse ="xoa"+(String)request.getSession().getAttribute("loginDateSouse");

        /*File file = new File(path+ File.separator+ dateSouse+File.separator+ siteTemplateModel.getSiteId());
        if(!file.exists()){//如果不存在，则创建文件夹
            file.mkdirs();
        }*/
//		//判断是存在该文件名称
        SiteMouldExample siteMouldExample=new SiteMouldExample();
        SiteMouldExample.Criteria criteria = siteMouldExample.createCriteria();
        criteria.andSiteIdEqualTo(siteTemplateModel.getSiteId());
        criteria.andTplFileNameEqualTo(siteTemplateModel.getTplFileName());
        List<SiteMould> siteMoulds = siteTemplateMapper.selectByExample(siteMouldExample);
        if (siteMoulds.size() > 0) {
            throw new RuntimeException("已存在该文件名["+siteTemplateModel.getTplFileName()+"]");
        }
        try {
           // FileUtils.storeString2File(path+ File.separator+ dateSouse+File.separator+siteTemplateModel.getSiteId()+ File.separator+siteTemplateModel.getTplFileName(), siteTemplateModel.getContent());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        SiteMould siteMould=new SiteMould();
        BeanUtils.copyProperties(siteTemplate,siteMould);
        if(!"html".equals(siteMould.getTplFileName().substring((siteMould.getTplFileName().length()-4),siteMould.getTplFileName().length()))){
            baseWrapper.setFlag(false);
            baseWrapper.setStatus(false);
            baseWrapper.setMsg("文件只支持html文件");
            return baseWrapper;
        }
        int i = siteTemplateMapper.insertSelective(siteMould);
        if (i > 0) {
            baseWrapper.setFlag(true);
            baseWrapper.setMsg("添加成功");
            baseWrapper.setStatus(true);
        }
        return  baseWrapper;
        // siteTemplateModel.setSid(siteMould.getSid());
    }

    /**
     * 更新模板
     * @param siteTemplateModel
     */
    public BaseWrapper updateTemplate(HttpServletRequest request,SiteTemplateModel siteTemplateModel){
        BaseWrapper baseWrapper=new BaseWrapper();
        SiteMould siteTemplate = siteTemplateMapper.selectByPrimaryKey(siteTemplateModel.getSid());
        siteTemplate.setTplDesc(siteTemplateModel.getTplDesc());
        siteTemplate.setTplName(siteTemplateModel.getTplName());
        siteTemplate.setTplFileName(siteTemplateModel.getTplFileName());
        if(!"html".equals(siteTemplate.getTplFileName().substring((siteTemplate.getTplFileName().length()-4),siteTemplate.getTplFileName().length()))){
            baseWrapper.setFlag(false);
            baseWrapper.setStatus(false);
            baseWrapper.setMsg("文件只支持html文件");
            return baseWrapper;
        }

        int i = siteTemplateMapper.updateByPrimaryKeySelective(siteTemplate);
        //            ResourceBundle rb =  ResourceBundle.getBundle("cms");
//            String path = rb.getString("rootPath")+ System.getProperty("file.separator")+indexTpl.getSiteId();
        //String path=request.getRealPath("cmstpls");
       // String dateSouse ="xoa"+(String)request.getSession().getAttribute("loginDateSouse");

        try {
/*
            FileUtils.storeString2File(path+ File.separator+siteTemplate.getSiteId()+ File.separator+siteTemplate.getTplFileName(), siteTemplateModel.getContent());
*/
            //FileUtils.storeString2File(path+ File.separator+dateSouse+File.separator+siteTemplate.getSiteId()+ File.separator+siteTemplate.getTplFileName(), siteTemplateModel.getContent());

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if (i > 0) {
            baseWrapper.setFlag(true);
            baseWrapper.setMsg("更新成功");
            baseWrapper.setStatus(true);
        }
        return baseWrapper;
    }

    /**
     * 删除模板
     * @param
     */
    public BaseWrapper delTemplate(HttpServletRequest request,int templateId){
        BaseWrapper baseWrapper=new BaseWrapper();
       // SiteTemplate siteTemplate = (SiteTemplate) simpleDaoSupport.get(SiteTemplate.class, templateId);
        SiteMould siteTemplate = siteTemplateMapper.selectByPrimaryKey(templateId);
        //删除原始文件
        //            ResourceBundle rb =  ResourceBundle.getBundle("cms");
//            String path = rb.getString("rootPath")+ System.getProperty("file.separator")+indexTpl.getSiteId();
        String path=request.getRealPath("cmstpls");
        String dateSouse ="xoa"+(String)request.getSession().getAttribute("loginDateSouse");

/*
        File file = new File(path+ File.separator+siteTemplate.getSiteId()+ File.separator+siteTemplate.getTplFileName());
*/
        File file = new File(path+ File.separator+dateSouse+File.separator+siteTemplate.getSiteId()+ File.separator+siteTemplate.getTplFileName());

        if(file.exists()){
            file.delete();
        }
        int i = siteTemplateMapper.deleteByPrimaryKey(siteTemplate.getSid());
        if (i > 0) {
            baseWrapper.setMsg("删除成功");
            baseWrapper.setFlag(true);
            baseWrapper.setStatus(true);
        }
        return  baseWrapper;
    }

    /**
     * 获取模板
     * @param
     */
    public SiteTemplateModel getTemplateModel(HttpServletRequest request,int templateId){
        SiteTemplateModel model = new SiteTemplateModel();
        SiteMould siteTemplate = siteTemplateMapper.selectByPrimaryKey(templateId);
        BeanUtils.copyProperties(siteTemplate, model);
//        ResourceBundle rb= ResourceBundle.getBundle("cms");
//        String path = rb.getString("rootPath");
        String path=request.getRealPath("cmstpls");
        String dateSouse ="xoa"+(String)request.getSession().getAttribute("loginDateSouse");

        try {
/*
            byte b[] = FileUtils.loadFile2Bytes(path+ File.separator+siteTemplate.getSiteId()+ File.separator+siteTemplate.getTplFileName());
*/
         //   byte b[] = FileUtils.loadFile2Bytes(path+ File.separator+dateSouse+File.separator+siteTemplate.getSiteId()+File.separator+siteTemplate.getTplFileName());

        //    model.setContent(new String(b,"UTF-8"));
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return model;
    }

    /**
     * 获取站点下模板列表
     * @param
     */
    public BaseWrapper listTemplates(int siteId){
        BaseWrapper baseWrapper=new BaseWrapper();
        SiteMouldExample siteMouldExample=new SiteMouldExample();
        SiteMouldExample.Criteria criteria = siteMouldExample.createCriteria();
        criteria.andSiteIdEqualTo(siteId);
        List<SiteMould> siteMoulds = siteTemplateMapper.selectByExample(siteMouldExample);
        baseWrapper.setData(siteMoulds);
        baseWrapper.setFlag(true);
        baseWrapper.setStatus(true);
        return baseWrapper;
    }



}
